package days48;

import java.util.Locale;
import java.util.Scanner;
public class day19 {
//    //两阶段终止模式
//    private static boolean flag;
//    private static Thread t1;
//    public static void main(String[] args) throws InterruptedException {
//        t1=new Thread(()->{
//            while (true){
//                if (flag){
//                    break;
//                }
//            }
//        });
//        t1.start();
//        Thread.sleep(5000);
//        System.out.println(1);
//        main1();
//    }
//
//    public static void main1() {
//        flag=true;
////        t1.interrupt();
//    }
//
//    public static void main4() {
//
//    }
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        while(sc.hasNextLine()){
            String t=sc.nextLine();
            String s=sc.nextLine();
            System.out.println(match(t,s));
        }
    }
    public static boolean match(String t,String s){
        char[] ct=t.toCharArray();
        char[] cs=s.toCharArray();
        int lt=ct.length;
        int ls=cs.length;
        boolean[][] dp=new boolean[ls+1][lt+1];
        dp[0][0]=true;
        for(int i=0;i<=ls;i++){
            for(int j=1;j<=lt;j++){
                if(ct[j-1]=='*'){
                    if(i==0){
                        dp[i][j]=dp[i][j-1];
                    }else{
                        if(cs[i-1]=='.' || (cs[i-1]>='0'&&cs[i-1]<='9') ||
                                (cs[i-1]>='a'&&cs[i-1]<='z') ||(cs[i-1]>='A'&&cs[i-1]<='Z')
                        ){
                            dp[i][j]=dp[i-1][j] || dp[i][j-1];
                        }
                    }
                }else{
                    if(i>0 && defs(ct[j-1],cs[i-1])){
                        dp[i][j]=dp[i-1][j-1];
                    }
                }
            }
        }
        return dp[ls][lt];
    }
    public static boolean defs(char t,char s){
        if(t=='?') return true;
        if(t>='a'&&t<='z'){
            t=(char)(t-'a'+'A');
        }
        if(s>='a'&&s<='z'){
            s=(char)(s-'a'+'A');
        }
        return s==t;
    }
    public static void main2(String[] args) {
        Scanner scanner=new Scanner(System.in);
        String str1=scanner.nextLine().toLowerCase(Locale.ROOT);
        String str2=scanner.nextLine().toLowerCase(Locale.ROOT);
        int j=0;
        for (int i = 0; i < str2.length(); i++) {
            if(j>=str1.length()){
                System.out.println(false);
                return;
            }
            if(str2.charAt(i)!=str1.charAt(j)&&str1.charAt(j)!='*'&&str1.charAt(j)!='?'){
                System.out.println(false);
                return;
            }
            if(str2.charAt(i)==str1.charAt(j)){
                j++;
                continue;
            }
            if(str2.charAt(i)<'a'&&str2.charAt(i)>'z'&&str2.charAt(i)>'Z'&&str2.charAt(i)<'A'&&str2.charAt(i)<'1'&&str2.charAt(i)>'9'){
                System.out.println(false);
                return;
            }
            if(str1.charAt(j)=='?'){
                i++;
                j++;
            }
            if(str1.charAt(j)=='*'){

            }
        }

    }
    public static void main1(String[] args) {
        Scanner scanner=new Scanner(System.in);
        int n=scanner.nextInt();
        if(n<3){
            System.out.println(1);
            return;
        }
        int a=1;
        int b=1;
        int c=0;
        for (int i = 2; i < n; i++) {
            c=a+b;
            a=b;
            b=c;
        }
        System.out.println(c);
    }
}
